| Предыдущая | Следующая | Оглавление | |
Flash Player 5.
delete reference
reference Имя удаляемой переменной или объекта.
Булево значение.
Оператор; уничтожает объектную ссылку указанную параметром reference и возвращает true если ссылка успешно удалена; в противном случае false. Этот оператор полезен для освобождения памяти используемой скриптами. Вы можете использовать оператор delete для удаления ссылок на объекты. После того как все ссылки на объекты удалены Flash Player берет на себя заботу об удалении объектов и освобождении используемой ими памяти.
Хотя delete является оператором, он обычно используется как выражение, как показано в следующем примере:
delete x;
Оператор delete может не сработать и возвратить false если параметр reference не существует или не может быть удален. Предопределенные объекты и свойства, а также переменные объявленные с помощью var не могут быть удалены. Вы не можете использовать оператор delete для удаления клипов.
Случай использования 1: Следующий пример создает объект, использует его, а затем удаляет за ненадобностью:
var account:Object = new Object();account.name = "Jon";account.balance = 10000;trace(account.name);delete account;trace(account.name); //выводит: Jon undefined
Случай использования 2: Следующий пример удаляет свойство объекта:
// создаем новый объект "account"var account:Object = new Object();// задаем для объекта account свойство nameaccount.name = "Jon";// удаляем свойствоdelete account.name;
Случай использования 3: Следующий пример удаляет свойство объекта:
var my_array:Array = new Array(); my_array[0] = "abc"; // my_array.length == 1 my_array[1] = "def"; // my_array.length == 2 my_array[2] = "ghi"; // my_array.length == 3 // удаляется my_array[2], но Array.length не изменяется delete my_array[2]; trace(my_array.length); // выводит 3 trace(my_array); // выводит abc,def,undefined
Случай использования 4: Следующий пример показывает поведение delete на объектных ссылках:
var ref1:Object = new Object();ref1.name = "Jody";// копируем переменную ссылочного типа в новую переменную// и удаляем ref1ref2 = ref1;delete ref1;trace("ref1.name "+ref1.name); //выводит undefinedtrace("ref2.name "+ref2.name); //выводит Jody
Если бы ref1 не была скопирована в ref2, то объект был бы удален при удалении ref1, потому что на него не осталось бы ссылок. Когда же мы удалим и ref2, то больше не останется ссылок на объект; он будет удален и освободится используемая им память.
var
| Посмотреть комментарии LiveDocs | Предыдущая | Следующая | Оглавление | |